#!/usr/bin/python
# -*- coding: utf-8 -*-

#$ -l h_rt=1:00:00
#$ -j y
#$ -o $HOME/viewstat.out
#$ -N viewstat

import sys
sys.path.append('/home/artem/pywikipedia')

import re

import calendar

def read_gzip(file_name):
	import gzip
	
	f = gzip.open(file_name)
	return f.read()

# gets current time in UTC
def get_time():
	import time
	return time.gmtime(time.time())

def MonthName(m):
	if m == 1:
		return 'января'
	elif m == 2:
		return 'февраля'
	elif m == 3:
		return 'марта'
	elif m == 4:
		return 'апреля'
	elif m == 5:
		return 'мая'
	elif m == 6:
		return 'июня'
	elif m == 7:
		return 'июля'
	elif m == 8:
		return 'августа'
	elif m == 9:
		return 'сентября'
	elif m == 10:
		return 'октября'
	elif m == 11:
		return 'ноября'
	elif m == 12:
		return 'декабря'

# Загрузка файла по заданному url. Автор: PabloG. Код взят со страницы http://stackoverflow.com/questions/22676/how-do-i-download-a-file-over-http-using-python
def download_url(url):
	print 'Downloading ' + url
	import urllib2
	
	u = urllib2.urlopen(url)
	meta = u.info()
	file_size = int(meta.getheaders("Content-Length")[0])

	f = open('/tmp/pagecounts.gz', 'wb')
	
	file_size_dl = 0
	block_sz = 8192
	while True:
		buffer = u.read(block_sz)
		if not buffer:
			break

		file_size_dl += len(buffer)
		f.write(buffer)

	f.close()

def get_content(day, hour):
	try:
		ymdh = day + '-'+ hour + '0000'
		download_url("http://dammit.lt/wikistats/pagecounts-" + ymdh + ".gz")
		return read_gzip('/tmp/pagecounts.gz')
	except IndexError:
		ymdh = day + '-'+ hour + '0001'
		download_url("http://dammit.lt/wikistats/pagecounts-" + ymdh + ".gz")
		return read_gzip('/tmp/pagecounts.gz')

#day = str(get_time().tm_mday-1)
month = get_time().tm_mon
year = str(get_time().tm_year)

for day in range(13,22):
	date = year + str(month).zfill(2) + str(day).zfill(2)
	total_day_views = 0
	for h in range(0,24):
	
		content = get_content(date, str(h).zfill(2))
	
		for title in re.findall('\nru\.n.+', content.replace('_', ' ')):
			if title != '':
				try:
					total_day_views += int(re.findall('(?<=[ ])[0-9]+(?=[ ][0-9])', title).pop())
				except IndexError:
					continue
	if total_day_views > 24000:
		total_day_views = 24000
	f = open('result.txt', 'a+')
	f.write('  bar:'+ str(day) + '/08 from:0 till:' + str(total_day_views/24) + ' width:30\n')
	f.close()

